const WebSocket = require('ws'); // 引入 WebSocket 库
const server = new WebSocket.Server({ port: 3000 }); // 创建 WebSocket 服务器并监听端口

// 中文名称数组
const names = ['张三', '李四', '王五', '赵六', '钱七'];

// 添加公告内容
let announcement = "欢迎进入游戏";

// 处理连接事件
server.on('connection', (socket) => {
    console.log('客户端已连接'); // 输出新客户端连接信息

    // 处理消息事件
    socket.on('message', (message) => {
        console.log('收到消息:', message); // 打印接收到的消息

        // 尝试解析 JSON 数据
        try {
            const data = JSON.parse(message); // 解析接收到的 JSON 数据

            if (data.type === 'login') { // 检查消息类型
                // 登录逻辑保持不变
                const username = data.user; // 获取账号
                const password = data.pass; // 获取密码

                if (username === '111111' && password === '222222') {
                    const randomId = Math.floor(100000 + Math.random() * 900000); // 生成一个6位数的随机ID
                    const randomName = names[Math.floor(Math.random() * names.length)]; // 随机选择一个中文名称
                    socket.send(JSON.stringify({ 
                        status: 'success', 
                        message: '登录成功', 
                        type: 'login_success', // 消息类型
                        user: username, // 登录的账号
                        id: randomId, // 返回随机生成的ID
                        name: randomName, // 返回随机生成的中文名称
                        announcement: announcement // 添加公告内容
                    })); 
                } else {
                    socket.send(JSON.stringify({ status: 'error', message: '账号或密码错误' })); // 返回错误消息
                }
            } else if (data.type === 'request_announcement') { // 处理公告请求
                // 处理公告请求
                socket.send(JSON.stringify({
                    type: 'announcement',
                    content: announcement
                }));
            }
        } catch (error) {
            // 如果解析失败，说明不是 JSON 格式的数据
            console.log('非 JSON 格式消息:', message.toString()); // 打印非 JSON 格式的消息
        }
    });

    // 处理关闭事件
    socket.on('close', () => {
        console.log('客户端已断开连接'); // 输出客户端断开连接信息
    });
});

// 输出服务器运行信息
console.log('WebSocket 服务器已启动，监听端口 3000');

// 添加一个函数来更新公告
function updateAnnouncement(newAnnouncement) {
    announcement = newAnnouncement;
    // 广播新公告给所有连接的客户端
    server.clients.forEach((client) => {
        if (client.readyState === WebSocket.OPEN) {
            client.send(JSON.stringify({
                type: 'announcement',
                content: announcement
            }));
        }
    });
}

// 示例：每隔一段时间更新公告
setInterval(() => {
    updateAnnouncement(`欢迎进入游戏！当前时间: ${new Date().toLocaleTimeString()}`);
}, 60000); // 每分钟更新一次
